iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0

第26天~


什麼是運算子的多載?

運算子的多載(Operator Overloading)是C++中允許程式設計師重新定義已有運算子(如 +-* 等)的行為,使其能夠作用於自訂類別物件的一種功能。藉由運算子多載,自訂的物件可以像基本資料型別(如整數、浮點數)一樣,進行直觀的運算操作。

在沒有運算子多載的情況下,C++的內建運算子只能應用於基本資料型別,例如兩個整數或浮點數相加。然而,透過運算子多載,使用者可以為自訂類別(例如複數、向量、矩陣等)賦予特定的行為,使這些物件之間的運算變得直觀且簡潔。

為什麼要使用運算子多載?

運算子多載的主要優勢在於提升程式的易讀性和直觀性。當我們為自訂類別多載了運算子後,物件之間的操作可以變得像基本型別一樣簡單,這能讓程式碼更具表現力且易於維護。

假設我們有一個表示複數的類別,若沒有運算子多載,我們可能需要編寫一個函數來進行兩個複數的相加操作,這樣的操作會顯得繁瑣且難以閱讀。而使用運算子多載後,我們可以直接使用 + 來表示複數的相加,這不僅讓程式碼更簡潔,也更符合數學直覺。

運算子多載還能使自訂類別的操作更加一致性。例如,透過多載比較運算子(如 ==!=),可以讓物件之間進行比較,這對於需要比較兩個自訂類別的情況非常有用。

可以多載的運算子

在C++中,大多數的運算子都可以被多載,這包括:
(1) 算術運算子:如 +-*/等,可以用來進行數值型運算,也可用於物件之間的數學操作。
(2) 比較運算子:如 ==!=<> 等,可以用來比較兩個物件是否相等或大小關係。
(3) 邏輯運算子:如 &&||!,可以用來對物件進行邏輯操作。
(4) 位元運算子:如 &|^~,可以用來對物件進行位元層面的操作。
(5) 其他運算子:如 [](陣列存取運算子)、()(函數調用運算子)、->(成員存取運算子),可以用來對物件進行更具體的操作。

然而,有些運算子是無法被多載的,例如.(成員訪問運算子)、.*(成員指標運算子)、::(範圍解析運算子)和?:(條件運算子)。這些運算子在 C++ 中有特殊用途,因此無法被重新定義。


大家繼續加油!


上一篇
Day25 拷貝建構元
系列文
用30天學習C++26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言